import router from "./index";
// 引入进度条
import nprogress from "nprogress";
import "nprogress/nprogress.css";
import { useUserStore } from "@/store/modules/user";
// 去除小圆圈
nprogress.configure({ showSpinner: false });

// 路由全局前置守卫
router.beforeEach((to, from, next) => {
  // 在组件外部使用pinia必须保证store有初始化，否则会报错
  const userStore = useUserStore();
  if (to.meta.title) {
    document.title = ("试剂管理系统-" + to.meta.title) as string;
  }
  const isAuthenticated = userStore.token;
  // 如果目标路由是登录页，直接跳转
  if (to.path === "/login") {
    next(); // 如果是登录页，直接放行
  } else {
    // 如果目标路由需要鉴权
    if (to.matched.some((record) => record.meta.requiresAuth)) {
      if (!isAuthenticated) {
        // 如果没有认证，跳转到登录页
        next({ path: "/login", query: { redirect: to.path } });
      } else {
        next(); // 认证通过，继续路由导航
      }
    } else {
      next(); // 不需要鉴权的页面，继续路由导航
    }
  }
  nprogress.start();
});

// 路由全局后置守卫
router.afterEach(() => {
  nprogress.done();
});
